package info.u250.c2d.tests.animations;

import com.badlogic.gdx.InputAdapter;
import com.badlogic.gdx.InputProcessor;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import info.u250.c2d.engine.Engine;
import info.u250.c2d.engine.EngineDrive;
import info.u250.c2d.engine.Scene;
import info.u250.c2d.engine.resources.AliasResourceManager;
import info.u250.c2d.graphic.AnimationSprite;


public class AnimationSpriteLoopTest extends Engine {
    @Override
    protected EngineDrive onSetupEngineDrive() {
        return new EngineX();
    }

    private class EngineX implements EngineDrive {
        @Override
        public void dispose() {
        }

        AnimationSprite sprite;
        boolean toggle = false;

        @Override
        public EngineOptions onSetupEngine() {
            return new EngineOptions(new String[]{"data/animationsprite/"}, 800, 480);
        }

        @Override
        public void onResourcesRegister(AliasResourceManager<String> reg) {
            reg.textureAtlas("Anim", "data/animationsprite/turkey.atlas");
        }

        @Override
        public void onLoadedResourcesCompleted() {
            sprite = new AnimationSprite(0.05f, Engine.resource("Anim", TextureAtlas.class), "fly");
            sprite.setPosition((Engine.getWidth() - sprite.getWidth()) / 2,
                    (Engine.getHeight() - sprite.getHeight()) / 2);


            Engine.setMainScene(new Scene() {

                @Override
                public void render(float delta) {
                    Engine.getSpriteBatch().begin();
                    sprite.render(delta);
                    Engine.getSpriteBatch().end();
                    Engine.debugInfo("animation with loop . touch the screen to stop \n and touch again to begin ");
                }

                @Override
                public InputProcessor getInputProcessor() {
                    return new InputAdapter() {
                        @Override
                        public boolean touchUp(int x, int y, int pointer,
                                               int button) {
                            toggle = !toggle;
                            if (toggle) {
                                sprite.setAlphaModulation(0.2f);
                                sprite.stop();
                            } else {
                                sprite.setAlphaModulation(1f);
                                sprite.play();
                            }
                            return super.touchUp(x, y, pointer, button);
                        }
                    };
                }

                @Override
                public void update(float delta) {
                }

                @Override
                public void hide() {
                }

                @Override
                public void show() {
                }
            });
        }
    }
}

